//
//  main.m
//  02 - ClassAndObject
//
//  Created by 韩旭 on 16/7/5.
//  Copyright © 2016年 HX. All rights reserved.
//
#import "Fraction.h"
#import "Person.h"
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
#pragma mark-
#if 0
    {
        //    1 .快捷键
        //    command + 0 开/收起左边栏
        //    command + option + 0 开/ 收右边栏
        //    command + shift + y 开/收下边栏
        //    command + R 运行
        //    command + B 编译
        //    command + Z 撤销
        //    command + shift + z / 重做/把撤销的返回来
        //    command + C 复制
        //    command + V 粘贴
        //    command + n 新建文件
        //    command + shift + n新建工程
        
        
        
        
        //    移动光标
        //    command + ⬅️ 移动到当前行最前面
        //    command + → 移动到当前行的最右边
        //    command + ↑ 移动到所有行的第一行
        //    command + ⬇️ 移动到所有行的最后一行
        
        //   3 . 选中文字
        //    shift + ⬅️ 选中向左一个字
        //    shift + → 选中向右一个字
        //    shift + ⬆️ 从当前光标文职开始,选中向上一行
        //    shift + ⬇️ 从当前贯标位置开始, 选中向下一行, 对应位置
        
        
        
        //    command + shift + ⬅️ 选中从光标开始, 左边所有的文字
        //    command + shift + →  选中从光标开始, 右边所有的文字
        //    command + shift + ↑  选中从光标开始, 上边所有的文字
        //    command + shift + ⬇️ 选中从贯标开始, 下边所有的文字
        
        
        //    1
        //    类和对象
        //    类：一个具有相同特征和行为的事物抽象集合
        //    对象：类的实例, 也称作类的实现
        //    面向对象的思想，万物都是对象。
        //    面向对象语言是面向对象思想的具体体现.
        //    面向对象编程 00P
        //    面向对象设计 OOD
        //    面向对象三大特征（特性）：封装. 继承 . 多态。提高代码的复用
        
        //    2
        //    Objective - C（OC）
        //    与C语言的区别：OC属于C语言的扩展
        //    OC有类的概念
        //    OC中声明属性和方法在.h中
        //    OC中具体实现方法在.m中
        //    .mm文件 是C++的文件， 在这个文件中可以编写C++代码
        //    OC中的根类 NSObject
        //    3创建OC的实例
        //    1>消息语法 [objc doSomething];
        //    向objc对象去发送一份doSomething的方法.让他去调用
        //    类方法的调用（由类名去调用其+方法）
        //    +alloc开辟内存空间
        NSObject *object = [NSObject alloc];
        //    实例方法的调用
        //    -init
        NSObject *newObject = [object init];
        //    创建一个Person
        Person *per = [[Person alloc]init];
        //    公开的成员可以直接通过->赋值->取值
        //    受保护的不能通过->去访问
        per->_age = 123;
        NSLog(@"%ld",per->_age);
        //  id 与 instancetype
        //   instancetype 在作为参数返回值的时候与id一样, 系统编译器会把id类型转化成instancetype（即当前对象类型）
        //    id 可以作为变量类型去使用, 但instancetype不可以
        //    id objects = [[NSObject alloc]init];
        //    [per sleep:3];
  
    }
#endif

#pragma mark -作业
#if 1
    {
        Fraction *fraction = [Fraction fractionWithDeno:5 Member:3];
        Fraction *fraction2 = [Fraction fractionWithDeno:5 Member:1];
        [fraction addWithFraction:fraction2];
        [fraction minWithFraction:fraction2];
        [fraction subWithFraction:fraction2];
        [fraction remWithFraction:fraction2];
        [fraction compareWithFraction:fraction2];
//        NSLog(@"%ld %ld",[fraction addWithFraction:fraction2].denominator, [fraction addWithFraction:fraction2].numerator);
//         NSLog(@"%ld %ld",[fraction minWithFraction:fraction2].denominator, [fraction minWithFraction:fraction2].numerator);
    }
#endif
    return 0;
}

